package com.dys.testfunction08;

import java.util.function.Function;

/**
 * @className: com.dys.testfunction08.FunctionTest
 * @description: Function: 根据一个类型的数据得到另外一个类型的数据，有参有返
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/31 下午10:13
 */
public class FunctionTest {

    // 传入一个参数，返回一个数值
    public static void testApply(Function<String, Integer> f1) {
        Integer apply = f1.apply("100");
        System.out.println("传入一个参数,返回一个数值：--->" + apply);
    }

    // 组合使用
    public static void testAndThen(Function<String, Integer> f1, Function<Integer, Integer> f2) {
        // Integer i1 = f1.apply("10");
        // Integer i2 = f2.apply(i1);

        // 方式2：
        Integer i2 = f1.andThen(f2).apply("10");
        System.out.println("i2 的值为：" + i2);
    }

    // 组合使用
    public static void testCompose(Function<String, Integer> f1, Function<Integer, Integer> f2) {
        // 方式2：
        Integer i2 = f2.compose(f1).apply("10");
        System.out.println("i2 的值为：" + i2);
    }

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        // testApply((msg)->{
        //     return Integer.parseInt(msg);
        // });

        // testAndThen(msg -> {
        //     return Integer.parseInt(msg);
        // }, msg2 -> {
        //     return msg2 * 10;
        // });

        testCompose(msg -> {
            return Integer.parseInt(msg);
        }, msg2 -> {
            return msg2 * 10;
        });
    }
}
